<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    const data = [
      {
          入职日期: 44505,
          姓名: "小张",
          工号: "9002",
          手机号: "13800000252",
          转正日期: 44892,
          部门: "总裁办"
      },
      {
          入职日期: 44506,
          姓名: "小李",
          工号: 9006,
          手机号: "13810000512",
          转正日期: 44893,
          部门: "总裁办",
      }
    ] 
    // result = [
      // {
      //     timeOfEntry:44505,
      //     mobile: "13800000252",
      //     username:"小张",
      //     correctionTime:  44892,
      //     workNumber: "9002",
      //     departmentName:"总裁办"
      // }
    // ]
    // const mapInfo = {
      // '入职日期': 'timeOfEntry',
        // '手机号': 'mobile',
        // '姓名': 'username',
      //   '转正日期': 'correctionTime',
      //   '工号': 'workNumber',
      //   '部门': 'departmentName',
      //   '聘用形式': 'formOfEmployment'
      // }
      function formatExcelDate(numb, format = '-') {
        const time = new Date((numb - 25567) * 24 * 3600000 - 5 * 60 * 1000 - 43 * 1000 - 24 * 3600000 - 8 * 3600000)
        time.setYear(time.getFullYear())
        const year = time.getFullYear() + ''
        const month = time.getMonth() + 1 + ''
        const date = time.getDate() + ''
        if (format && format.length === 1) {
          return year + format + month + format + date
        }
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }

    // 需求: 我们上传 excel 以后, xlsx 插件会给我们返回一个对象数组, 得到的对象数组里面吗对象的key是中文的
    // 现在得到了一个汉字的数组以后, 是把数组里面的每一个函数转换为英文, 此时需要一个中文转英文的映射表
    // 但是我们上传 excel 的时候, 后端接口需要的是英文字段. 先定义一个映射表
    const newArray = [] // 定义一个空数组
    const transformZhCNToEn = (arr) => {
      const mapInfo = {
        入职日期: 'timeOfEntry',
        手机号: 'mobile',
        姓名: 'username',
        转正日期: 'correctionTime',
        工号: 'workNumber',
        部门: 'departmentName',
        聘用形式: 'formOfEmployment'
      }
      // 利用 map 方法, 加工后得到新数组
      return arr.map(item => {
        const obj = {}
        const keysList = Object.keys(item)
        console.log(keysList);
        // ["入职日期", "手机号", "姓名", ...]
        keysList.forEach(childrenItem => {
          // enKey 每一次循环对应的 英文的键
          const enKey = mapInfo[childrenItem] // 将对象 mapInfo 中的中文键对应的 英文值作为英文键
          // 将外层循环的每一项对象 item 中对应中文键 children 的值, 作为键值对赋给空对象 obj 中英文键对应的值
          // 如果是两个 excel 时间的需要单独处理一下, js的时间是从1970-1-1 excel 起始点不一样
          // 所以这里需要先进性判断: 
          // 如果在进行对象赋值的时候, 当前项的值是时间戳 就将当前项带入到时间转换函数
          // 否则就直接进行赋值操作
          if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
            obj[enKey] =  formatExcelDate(item[childrenItem] )
          }
          obj[enKey] =  item[childrenItem] 
        })
        return obj
      })
    }
    transformZhCNToEn(data)
    console.log(transformZhCNToEn(data));

  </script>
  
</body>
</html>